/*
 * jQuery Nivo Slider v2.4
 * http://nivo.dev7studios.com
 *
 * Copyright 2011, Gilbert Pellegrom
 * Free to use and abuse under the MIT license.
 * http://www.opensource.org/licenses/mit-license.php
 */

(function(a) {
	var A = function(s, v) {
		var f = a.extend({}, a.fn.nivoSlider.defaults, v),g = {currentSlide:0,currentImage:"",totalSlides:0,randAnim:"",running:false,paused:false,stop:false},e = a(s);
		e.data("nivo:vars", g);
		e.css("position", "relative");
		e.addClass("nivoSlider");
		var j = e.children();
		j.each(function() {
			var b = a(this),h = "";
			if (!b.is("img")) {
				if (b.is("a")) {
					b.addClass("nivo-imageLink");
					h = b
				}
				b = b.find("img:first")
			}
			var c = b.width();
			if (c == 0)c = b.attr("width");
			var o = b.height();
			if (o == 0)o = b.attr("height");
			c > e.width() &&
			e.width(c);
			o > e.height() && e.height(o);
			h != "" && h.css("display", "none");
			b.css("display", "none");
			g.totalSlides++
		});
		if (f.startSlide > 0) {
			if (f.startSlide >= g.totalSlides)f.startSlide = g.totalSlides - 1;
			g.currentSlide = f.startSlide
		}
		g.currentImage = a(j[g.currentSlide]).is("img") ? a(j[g.currentSlide]) : a(j[g.currentSlide]).find("img:first");
		a(j[g.currentSlide]).is("a") && a(j[g.currentSlide]).css("display", "block");
		e.css("background", 'url("' + g.currentImage.attr("src") + '") no-repeat');
		for (var k = 0; k < f.slices; k++) {
			var p =
					Math.round(e.width() / f.slices);
			k == f.slices - 1 ? e.append(a('<div class="nivo-slice"></div>').css({left:p * k + "px",width:e.width() - p * k + "px"})) : e.append(a('<div class="nivo-slice"></div>').css({left:p * k + "px",width:p + "px"}))
		}
		e.append(a('<div class="nivo-caption"><p></p></div>').css({display:"none",opacity:f.captionOpacity}));
		if (g.currentImage.attr("title") != "") {
			k = g.currentImage.attr("title");
			if (k.substr(0, 1) == "#")k = a(k).html();
			a(".nivo-caption p", e).html(k);
			a(".nivo-caption", e).fadeIn(f.animSpeed)
		}
		var l =
				0;
		if (!f.manualAdvance && j.length > 1)l = setInterval(function() {
			r(e, j, f, false)
		}, f.pauseTime);
		if (f.directionNav) {
			e.append('<!--<div class="nivo-directionNav"><a class="nivo-prevNav">Prev</a><a class="nivo-nextNav">Next</a></div>--->');
			if (f.directionNavHide) {
				a(".nivo-directionNav", e).hide();
				e.hover(function() {
					a(".nivo-directionNav", e).show()
				}, function() {
					a(".nivo-directionNav", e).hide()
				})
			}
			a("a.nivo-prevNav", e).live("click", function() {
				if (g.running)return false;
				clearInterval(l);
				l = "";
				g.currentSlide -= 2;
				r(e, j, f, "prev")
			});
			a("a.nivo-nextNav", e).live("click", function() {
				if (g.running)return false;
				clearInterval(l);
				l = "";
				r(e, j, f, "next")
			})
		}
		if (f.controlNav) {
			p = a('<!--<div class="nivo-controlNav"></div>--->');
			e.append(p);
			for (k = 0; k < j.length; k++)if (f.controlNavThumbs) {
				var t = j.eq(k);
				t.is("img") || (t = t.find("img:first"));
				f.controlNavThumbsFromRel ? p.append('<a class="nivo-control" rel="' + k + '"><img src="' + t.attr("rel") + '" alt="" /></a>') : p.append('<a class="nivo-control" rel="' + k + '"><img src="' + t.attr("src").replace(f.controlNavThumbsSearch,
						f.controlNavThumbsReplace) + '" alt="" /></a>')
			} else p.append('<a class="nivo-control" rel="' + k + '">' + (k + 1) + "</a>");
			a(".nivo-controlNav a:eq(" + g.currentSlide + ")", e).addClass("active");
			a(".nivo-controlNav a", e).live("click", function() {
				if (g.running)return false;
				if (a(this).hasClass("active"))return false;
				clearInterval(l);
				l = "";
				e.css("background", 'url("' + g.currentImage.attr("src") + '") no-repeat');
				g.currentSlide = a(this).attr("rel") - 1;
				r(e, j, f, "control")
			})
		}
		f.keyboardNav && a(window).keypress(function(b) {
			if (b.keyCode ==
					"37") {
				if (g.running)return false;
				clearInterval(l);
				l = "";
				g.currentSlide -= 2;
				r(e, j, f, "prev")
			}
			if (b.keyCode == "39") {
				if (g.running)return false;
				clearInterval(l);
				l = "";
				r(e, j, f, "next")
			}
		});
		f.pauseOnHover && e.hover(function() {
			g.paused = true;
			clearInterval(l);
			l = ""
		}, function() {
			g.paused = false;
			if (l == "" && !f.manualAdvance)l = setInterval(function() {
				r(e, j, f, false)
			}, f.pauseTime)
		});
		e.bind("nivo:animFinished", function() {
			g.running = false;
			a(j).each(function() {
				a(this).is("a") && a(this).css("display", "none")
			});
			a(j[g.currentSlide]).is("a") &&
			a(j[g.currentSlide]).css("display", "block");
			if (l == "" && !g.paused && !f.manualAdvance)l = setInterval(function() {
				r(e, j, f, false)
			}, f.pauseTime);
			f.afterChange.call(this)
		});
		var w = function(b, h) {
			var c = 0;
			a(".nivo-slice", b).each(function() {
				var o = a(this),d = Math.round(b.width() / h.slices);
				c == h.slices - 1 ? o.css("width", b.width() - d * c + "px") : o.css("width", d + "px");
				c++
			})
		},r = function(b, h, c, o) {
			var d = b.data("nivo:vars");
			d && d.currentSlide == d.totalSlides - 1 && c.lastSlide.call(this);
			if ((!d || d.stop) && !o)return false;
			c.beforeChange.call(this);
			if (o) {
				o == "prev" && b.css("background", 'url("' + d.currentImage.attr("src") + '") no-repeat');
				o == "next" && b.css("background", 'url("' + d.currentImage.attr("src") + '") no-repeat')
			} else b.css("background", 'url("' + d.currentImage.attr("src") + '") no-repeat');
			d.currentSlide++;
			if (d.currentSlide == d.totalSlides) {
				d.currentSlide = 0;
				c.slideshowEnd.call(this)
			}
			if (d.currentSlide < 0)d.currentSlide = d.totalSlides - 1;
			d.currentImage = a(h[d.currentSlide]).is("img") ? a(h[d.currentSlide]) : a(h[d.currentSlide]).find("img:first");
			if (c.controlNav) {
				a(".nivo-controlNav a",
						b).removeClass("active");
				a(".nivo-controlNav a:eq(" + d.currentSlide + ")", b).addClass("active")
			}
			if (d.currentImage.attr("title") != "") {
				var u = d.currentImage.attr("title");
				if (u.substr(0, 1) == "#")u = a(u).html();
				a(".nivo-caption", b).css("display") == "block" ? a(".nivo-caption p", b).fadeOut(c.animSpeed, function() {
					a(this).html(u);
					a(this).fadeIn(c.animSpeed)
				}) : a(".nivo-caption p", b).html(u);
				a(".nivo-caption", b).fadeIn(c.animSpeed)
			} else a(".nivo-caption", b).fadeOut(c.animSpeed);
			var m = 0;
			a(".nivo-slice", b).each(function() {
				var i =
						Math.round(b.width() / c.slices);
				a(this).css({height:"0px",opacity:"0",background:'url("' + d.currentImage.attr("src") + '") no-repeat -' + (i + m * i - i) + "px 0%"});
				m++
			});
			if (c.effect == "random") {
				h = ["sliceDownRight","sliceDownLeft","sliceUpRight","sliceUpLeft","sliceUpDown","sliceUpDownLeft","fold","fade","slideInRight","slideInLeft"];
				d.randAnim = h[Math.floor(Math.random() * (h.length + 1))];
				if (d.randAnim == undefined)d.randAnim = "fade"
			}
			if (c.effect.indexOf(",") != -1) {
				h = c.effect.split(",");
				d.randAnim = h[Math.floor(Math.random() *
						h.length)];
				if (d.randAnim == undefined)d.randAnim = "fade"
			}
			d.running = true;
			if (c.effect == "sliceDown" || c.effect == "sliceDownRight" || d.randAnim == "sliceDownRight" || c.effect == "sliceDownLeft" || d.randAnim == "sliceDownLeft") {
				var n = 0;
				m = 0;
				w(b, c);
				h = a(".nivo-slice", b);
				if (c.effect == "sliceDownLeft" || d.randAnim == "sliceDownLeft")h = a(".nivo-slice", b)._reverse();
				h.each(function() {
					var i = a(this);
					i.css({top:"0px"});
					m == c.slices - 1 ? setTimeout(function() {
						i.animate({height:"100%",opacity:"1.0"}, c.animSpeed, "", function() {
							b.trigger("nivo:animFinished")
						})
					},
							100 + n) : setTimeout(function() {
						i.animate({height:"100%",opacity:"1.0"}, c.animSpeed)
					}, 100 + n);
					n += 50;
					m++
				})
			} else if (c.effect == "sliceUp" || c.effect == "sliceUpRight" || d.randAnim == "sliceUpRight" || c.effect == "sliceUpLeft" || d.randAnim == "sliceUpLeft") {
				m = n = 0;
				w(b, c);
				h = a(".nivo-slice", b);
				if (c.effect == "sliceUpLeft" || d.randAnim == "sliceUpLeft")h = a(".nivo-slice", b)._reverse();
				h.each(function() {
					var i = a(this);
					i.css({bottom:"0px"});
					m == c.slices - 1 ? setTimeout(function() {
						i.animate({height:"100%",opacity:"1.0"}, c.animSpeed, "",
								function() {
									b.trigger("nivo:animFinished")
								})
					}, 100 + n) : setTimeout(function() {
						i.animate({height:"100%",opacity:"1.0"}, c.animSpeed)
					}, 100 + n);
					n += 50;
					m++
				})
			} else if (c.effect == "sliceUpDown" || c.effect == "sliceUpDownRight" || d.randAnim == "sliceUpDown" || c.effect == "sliceUpDownLeft" || d.randAnim == "sliceUpDownLeft") {
				var x = m = n = 0;
				w(b, c);
				h = a(".nivo-slice", b);
				if (c.effect == "sliceUpDownLeft" || d.randAnim == "sliceUpDownLeft")h = a(".nivo-slice", b)._reverse();
				h.each(function() {
					var i = a(this);
					if (m == 0) {
						i.css("top", "0px");
						m++
					} else {
						i.css("bottom",
								"0px");
						m = 0
					}
					x == c.slices - 1 ? setTimeout(function() {
						i.animate({height:"100%",opacity:"1.0"}, c.animSpeed, "", function() {
							b.trigger("nivo:animFinished")
						})
					}, 100 + n) : setTimeout(function() {
						i.animate({height:"100%",opacity:"1.0"}, c.animSpeed)
					}, 100 + n);
					n += 50;
					x++
				})
			} else if (c.effect == "fold" || d.randAnim == "fold") {
				m = n = 0;
				w(b, c);
				a(".nivo-slice", b).each(function() {
					var i = a(this),y = i.width();
					i.css({top:"0px",height:"100%",width:"0px"});
					m == c.slices - 1 ? setTimeout(function() {
						i.animate({width:y,opacity:"1.0"}, c.animSpeed, "", function() {
							b.trigger("nivo:animFinished")
						})
					},
							100 + n) : setTimeout(function() {
						i.animate({width:y,opacity:"1.0"}, c.animSpeed)
					}, 100 + n);
					n += 50;
					m++
				})
			} else if (c.effect == "fade" || d.randAnim == "fade") {
				var q = a(".nivo-slice:first", b);
				q.css({height:"100%",width:b.width() + "px"});
				q.animate({opacity:"1.0"}, c.animSpeed * 2, "", function() {
					b.trigger("nivo:animFinished")
				})
			} else if (c.effect == "slideInRight" || d.randAnim == "slideInRight") {
				q = a(".nivo-slice:first", b);
				q.css({height:"100%",width:"0px",opacity:"1"});
				q.animate({width:b.width() + "px"}, c.animSpeed * 2, "", function() {
					b.trigger("nivo:animFinished")
				})
			} else if (c.effect ==
					"slideInLeft" || d.randAnim == "slideInLeft") {
				q = a(".nivo-slice:first", b);
				q.css({height:"100%",width:"0px",opacity:"1",left:"",right:"0px"});
				q.animate({width:b.width() + "px"}, c.animSpeed * 2, "", function() {
					q.css({left:"0px",right:""});
					b.trigger("nivo:animFinished")
				})
			}
		},z = function(b) {
			this.console && typeof console.log != "undefined" && console.log(b)
		};
		this.stop = function() {
			if (!a(s).data("nivo:vars").stop) {
				a(s).data("nivo:vars").stop = true;
				z("Stop Slider")
			}
		};
		this.start = function() {
			if (a(s).data("nivo:vars").stop) {
				a(s).data("nivo:vars").stop =
						false;
				z("Start Slider")
			}
		};
		f.afterLoad.call(this)
	};
	a.fn.nivoSlider = function(s) {
		return this.each(function() {
			var v = a(this);
			if (!v.data("nivoslider")) {
				var f = new A(this, s);
				v.data("nivoslider", f)
			}
		})
	};
	a.fn.nivoSlider.defaults = {effect:"fade",slices:15,animSpeed:500,pauseTime:7E3,startSlide:0,directionNav:true,directionNavHide:true,controlNav:true,controlNavThumbs:false,controlNavThumbsFromRel:false,controlNavThumbsSearch:".jpg",controlNavThumbsReplace:"_thumb.jpg",keyboardNav:true,pauseOnHover:true,manualAdvance:false,
		captionOpacity:0.8,beforeChange:function() {
		},afterChange:function() {
		},slideshowEnd:function() {
		},lastSlide:function() {
		},afterLoad:function() {
		}};
	a.fn._reverse = [].reverse
})(jQuery);